#include "mcu.h"

void SystemInit(void)
{
    __disable_irq();           // 关全局中断
                               // 关闭写保护
    SYS_DisableIOCFGProtect(); /*关闭IOCONFIG写保护*/
    SYS_DisableGPIO0Protect(); /*关闭GPIO0的相关寄存器写保护*/
    SYS_DisableGPIO1Protect(); /*关闭GPIO1的相关寄存器写保护*/
    SYS_DisableGPIO2Protect(); /*关闭GPIO2的相关寄存器写保护*/
    SYS_DisableGPIO3Protect(); /*关闭GPIO3的相关寄存器写保护*/
    SYS_DisableGPIO4Protect(); /*关闭GPIO4的相关寄存器写保护*/

    // 中断向量表地址初始化

    // 时钟初始化
#if F_HCLK == 64
    SYS_ConfigHSI(SYS_CLK_HSI_64M);                     /*设置内部高速时钟为64Mhz*/
#elif F_HCLK == 48
    SYS_ConfigHSI(SYS_CLK_HSI_48M);                     /*设置内部高速时钟为48Mhz*/
#else 
    #error "暂不支持"
#endif
    SYS_EnableHSI();                                    /*开启高速时钟*/
    SYS_ConfigAHBClock(SYS_CLK_SEL_HSI, SYS_CLK_DIV_1); /*设置AHB时钟为高速时钟的1分频*/
    SYS_ConfigAPBClock(0);                  /*设置APB时钟为AHB时钟的1分频*/
    SystemCoreClockUpdate();                            /*刷新SystemCoreCLk、SystemAPBClock变量值*/

    // 开启外设时钟
    SYS->APBCKEN = _MCU_PER_CLK_EN_DEFAULT;
}
